//package cn.tqfeiyang.springplus.generator.name;
//
//import cn.tqfeiyang.springplus.generator.jdbc.FieldInfo;
//import cn.tqfeiyang.springplus.generator.jdbc.TableInfo;
//import cn.tqfeiyang.springplus.generator.util.Pluralizer;
//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
//
//import java.util.Objects;
//
///**
// * 名称快捷工具
// *
// * @author tqfeiyang
// * @since 2024/10/18 16:24
// */
//public class NS {
//
//    /**
//     * 内部被包装的对象
//     */
//    private Object obj = null;
//
//    /**
//     * 内部处理的字符串
//     */
//    private String str = "";
//
//    /**
//     * 私有构造器
//     */
//    private NS(Object obj) {
//        this.setObj(obj);
//    }
//
//    /**
//     * 私有构造器
//     */
//    private NS(Object obj, String str) {
//        this.setObj(obj);
//        this.str = str;
//    }
//
//    /**
//     * 设置内部对象
//     */
//    private void setObj(Object obj) {
//        this.obj = obj;
//        if (obj instanceof TableInfo) {
//            this.str = ((TableInfo) obj).getName();
//        } else if (obj instanceof FieldInfo) {
//            this.str =  ((FieldInfo) obj).getName();
//        } else {
//            this.str = "";
//        }
//    }
//
//    /**
//     * 领域名
//     */
//    public static NS domainName(TableInfo table) {
//        return new NS(table, NamingHelper.domainName(table.getGeneratorConfig(), table));
//    }
//
//    /**
//     * 模块名
//     */
//    public static NS moduleName(TableInfo table) {
//        return new NS(table, NamingHelper.moduleName(table.getGeneratorConfig(), table));
//    }
//
//    /**
//     * Java包名
//     */
//    public static NS packageName(TableInfo table) {
//        return new NS(table, NamingHelper.packageName(table.getGeneratorConfig(), table));
//    }
//
//    /**
//     * 小写
//     */
//    public NS lower() {
//        this.str = this.str.toLowerCase();
//        return this;
//    }
//
//    /**
//     * 大写
//     */
//    public NS upper() {
//        this.str = this.str.toUpperCase();
//        return this;
//    }
//
//    /**
//     * 字符替换
//     */
//    public NS replace(CharSequence target, CharSequence replacement) {
//        this.str = this.str.replace(target, replacement);
//        return this;
//    }
//
//    /**
//     * 增加前缀
//     */
//    public NS prefix(CharSequence prefix) {
//        this.str = prefix + this.str;
//        return this;
//    }
//
//    /**
//     * 增加后缀
//     */
//    public NS suffix(CharSequence suffix) {
//        this.str = this.str + suffix;
//        return this;
//    }
//
//    /**
//     * 骆驼(Camel)命名，首个单词的首字母小写，之后单词的首字母都大写
//     */
//    public NS camel() {
//        this.str = NamingStrategy.underlineToCamel(this.str);
//        return this;
//    }
//
//    /**
//     * 帕斯卡(Pascal)命名，所有单词的首字母都大写
//     */
//    public NS pascal() {
//        this.str = NamingStrategy.capitalFirst(NamingStrategy.underlineToCamel(this.str));
//        return this;
//    }
//
//    /**
//     * 复数
//     */
//    public NS plural() {
//        this.str = Pluralizer.toPlural(this.str);
//        return this;
//    }
//
//    /**
//     * 转成字符串
//     *
//     * @return 字符串
//     */
//    @Override
//    public String toString() {
//        if (StringUtils.isNotBlank(str)) {
//            return str;
//        } else if (Objects.nonNull(obj)) {
//            if (obj instanceof TableInfo) {
//                return ((TableInfo) obj).getName();
//            } else if (obj instanceof FieldInfo) {
//                return ((FieldInfo) obj).getName();
//            } else {
//                return obj.toString();
//            }
//        } else {
//            return super.toString();
//        }
//    }
//}
